package com.mazegame.backend;

import com.mazegame.backend.DBUtils;
import com.google.gson.Gson;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

public class BackendLoginService {

    public static String login(String username, String password) {
//        // 模拟网络延迟（可选）
//        try {
//            Thread.sleep(800);
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }

        Map<String, String> response = new HashMap<>();


        /*关键步骤：
        * 获取数据库连接：DBUtils.getConnection()
        * 准备 SQL 语句：conn.prepareStatement(sql)
        * 设置参数：pstmt.setString(1, username); pstmt.setString(2, password);
        * 执行查询：pstmt.executeQuery()
        * 处理结果集：rs.next()
        * 关闭资源：rs.close(); pstmt.close();
        * */
        // 数据库验证逻辑
        try (Connection conn = DBUtils.getConnection()) {
            // SQL 语句：查询用户信息
            String sql = "SELECT * FROM users WHERE username = ? AND password = ?";
            PreparedStatement pstmt = conn.prepareStatement(sql);

            // 设置参数（JDBC 语句）
            pstmt.setString(1, username);
            pstmt.setString(2, password);

            // 执行查询（JDBC 语句）
            ResultSet rs = pstmt.executeQuery();

            // 处理结果集（JDBC 语句）
            if (rs.next()) {
                // 登录成功
                // 用户验证成功，获取用户ID
                int userId = rs.getInt("id");

                response.put("user_id",  String.valueOf(userId));
                response.put("status", "success");
                response.put("message", "登录成功");
            } else {
                // 登录失败
                response.put("status", "error");
                response.put("code", "invalid_credentials");
                response.put("message", "用户名或密码错误");
            }

            // 关闭资源（JDBC 语句）
            rs.close();
            pstmt.close();

        } catch (SQLException e) {
            e.printStackTrace();
            // 数据库操作失败
            response.put("status", "error");
            response.put("code", "database_error");
            response.put("message", "数据库查询失败");
        }

        // 返回 JSON 格式的响应
        return new Gson().toJson(response);
    }
}
